package inmobiliaria;

import java.util.*;


public class Evento {

	private List<Login> logins=new ArrayList<Login>();
	private List<Aviso> avisos=new ArrayList<Aviso>();
	
	public List<Login> getCuentas() {
		return logins;
	}
	public List<Aviso> getAvisos() {
		return avisos;
	}
	
	public Login buscarLogin(String correo) {
		for (Login login:logins){
			if(login.getCorreo().equals(correo)){
				return login;
			}
		}
		return null;
	}

	public void registrarLogin(String correo, String clave
			,String nombre, String apellidoPaterno
			,String apellidoMaterno, String sexo, String fechaNacimiento) {		
		Usuario usuario=new Usuario(nombre,apellidoPaterno,apellidoMaterno
				,sexo,fechaNacimiento);
		Login login=new Login(correo,clave,usuario);
		logins.add(login);
	}
	
	public void modificarLogin(String correo
			,String nombre, String apellidoPaterno
			,String apellidoMaterno, String sexo, String fechaNacimiento) {
		Login login=buscarLogin(correo);
		if (login!=null){
			Usuario usuario=new Usuario();
			usuario.setNombre(nombre);
			usuario.setApellidoMaterno(apellidoMaterno);
			usuario.setApellidoPaterno(apellidoPaterno);
			usuario.setSexo(sexo);
			usuario.setFechaNacimiento(fechaNacimiento);
			login.setUsuario(usuario);			
		}
	}
	
	public void modificarPassword(String correo, String passwordActual,String passwordNueva) {
		Login login=buscarLogin(correo);
		if (login!=null){
			if (login.getPassword().equals(passwordActual)){
				login.setPassword(passwordNueva);			
			}		
		}		
	}
	
	public void registrarAviso(String correo, String estado, String tipoOperacion
			, String tipoInmueble,String distrito, Long precio
			, boolean destacado, int numeroDormitorios
			, int antiguedad, int area) {		
		Aviso aviso=new Aviso(correo,estado,tipoOperacion
				,tipoInmueble,distrito,precio
				,destacado,numeroDormitorios
				,antiguedad,area);
		avisos.add(aviso);
	}
	
	
	
	public List<Aviso> consultarAvisosTipoOperacion(String tipoOperacion) {
		List<Aviso> avisosRespuesta=new ArrayList<Aviso>();
		for (Aviso aviso:avisos){
			if(aviso.getTipoOperacion().equals(tipoOperacion)){
				avisosRespuesta.add(aviso);
			}
		}
		return avisosRespuesta;
	}
	
	public List<Aviso> consultarAvisosTipoInmueble(String tipoInmueble) {
		List<Aviso> avisosRespuesta=new ArrayList<Aviso>();
		for (Aviso aviso:avisos){
			if(aviso.getTipoInmueble().equals(tipoInmueble)){
				avisosRespuesta.add(aviso);
			}
		}
		return avisosRespuesta;
	}
	
	public List<Aviso> consultarAvisosUbicacion(String ubicacion) {
		List<Aviso> avisosRespuesta=new ArrayList<Aviso>();
		for (Aviso aviso:avisos){
			if(aviso.getDistrito().equals(ubicacion)){
				avisosRespuesta.add(aviso);
			}
		}
		return avisosRespuesta;
	}
	
	public List<Aviso> consultarAvisosDesde(Long precio) {
		List<Aviso> avisosRespuesta=new ArrayList<Aviso>();
		for (Aviso aviso:avisos){
			if(aviso.getPrecio()>=precio){
				avisosRespuesta.add(aviso);
			}
		}
		return avisosRespuesta;
	}
	
	public List<Aviso> consultarAvisosHasta(Long precio) {
		List<Aviso> avisosRespuesta=new ArrayList<Aviso>();
		for (Aviso aviso:avisos){
			if(aviso.getPrecio()<=precio){
				avisosRespuesta.add(aviso);
			}
		}
		return avisosRespuesta;
	}
	
	public List<Aviso> consultarAvisosNumeroDormitorios(int numeroDormitorios) {
		List<Aviso> avisosRespuesta=new ArrayList<Aviso>();
		for (Aviso aviso:avisos){
			if(aviso.getNumeroDormitorios()==numeroDormitorios){
				avisosRespuesta.add(aviso);
			}
		}
		return avisosRespuesta;
	}
	
	public List<Aviso> consultarAvisosAntiguedad(int antiguedad) {
		List<Aviso> avisosRespuesta=new ArrayList<Aviso>();
		for (Aviso aviso:avisos){
			if(aviso.getAntiguedad()==antiguedad){
				avisosRespuesta.add(aviso);
			}
		}
		return avisosRespuesta;
	}
	
	public List<Aviso> consultarAvisosArea(int area) {
		List<Aviso> avisosRespuesta=new ArrayList<Aviso>();
		for (Aviso aviso:avisos){
			if(aviso.getArea()==area){
				avisosRespuesta.add(aviso);
			}
		}
		return avisosRespuesta;
	}
	
	public boolean consultaCompleta(String tipoOperacion, String tipoInmueble,
			String ubicacion, long min, long max) {
		boolean encontro=false;
		for (Aviso aviso:avisos){
			if (tipoOperacion != "") {
				if (tipoInmueble != "") {
					if (ubicacion != "") {
						if (min != 0 && max!=0) {
							if(aviso.getTipoOperacion()==tipoOperacion && aviso.getTipoInmueble()==tipoInmueble && aviso.getDistrito()==ubicacion && aviso.getPrecio()>min && aviso.getPrecio()<max){
								System.out.println(avisos);
								encontro=true;
							}	
						}else {
			
						if(aviso.getTipoOperacion()==tipoOperacion && aviso.getTipoInmueble()==tipoInmueble && aviso.getDistrito()==ubicacion){
							System.out.println(avisos);
							encontro=true;
						}			
						}
					}else {
						if(aviso.getTipoOperacion()==tipoOperacion && aviso.getTipoInmueble()==tipoInmueble){
							System.out.println(avisos);
							encontro=true;
						}
					}
						
				} else {
					if(aviso.getTipoOperacion()==tipoOperacion){
						System.out.println(avisos);
						encontro=true;
					}
				}
			}
		}
		
		return encontro;
	}
	
	public List<Aviso> consultarAvisosDeUsuarioActivo(String correo) {
		List<Aviso> avisosResultado=new ArrayList<Aviso>();
		for (Aviso aviso:avisos){
			if(aviso.getCorreo().equals(correo) && aviso.getEstado().equals("Activo")){
				avisosResultado.add(aviso);
			}
		}
		return avisosResultado;
	}
	
	public List<Aviso> consultarAvisosDeUsuarioInactivo(String correo) {
		List<Aviso> avisosResultado=new ArrayList<Aviso>();
		for (Aviso aviso:avisos){
			if(aviso.getCorreo().equals(correo) && aviso.getEstado().equals("Inactivo")){
				avisosResultado.add(aviso);
			}
		}
		return avisosResultado;
	}
}

